/**
 * Created by kevin on 2017/6/1.
 */

var model= require('./model');
var Roles = require('./Roles');
var pwd = require('../utils/pwd');

var Users = model.createModel({
    username : String,
    nickname : String,
    email : String,
    passwd:String,
    applying : {type:Boolean,default:false}, // 申请中
    root : {type:Boolean,default:false},
    role: {type:model.objId,ref:'Roles'},
    ctime : {type : Date,default:Date.now}
},'Users');


Users.getLoginInfo = function (username,callback) {
    Users.findOne({"$or":[{'username':username},{'email':username}]},null,{ lean: true }).populate('role').exec(function (err,user) {
        if (callback) {
            callback(err,user);
        }
    })
};

Users.getbyId = function (id,callback) {
    Users.findById(id,null,{ lean: true }).populate('role').exec(function (err,user) {
        if (callback) {
            callback(err,user);
        }
    })
};

Users.edit = function (id,doc,callback) {
    if (doc.passwd) {
        doc.passwd = pwd(doc.passwd);
    }
    Users.findByIdAndUpdate(id, doc, callback);
};

Users.getByName = function get(username,callback) {
    Users.getLoginInfo(username,function (err,user) {
        if (user) {
            user.passwd = null;
        }
        if (callback) {
            callback(err,user);
        }
    })
};

Users.getAll = function(callback) {
    Users.find({},null,{ lean: true ,sort:{ctime:-1}}).populate('role').exec(function (err,users) {
        if (err) {
            if (callback) {
                callback(err,null);
            }
        } else  {
            if (callback) {
                callback(null,users);
            }
        }
    });
}

Users.createUnique = function (user,callback) {
    Users.findOne({"$or":[{'username':user.username},{'email':user.email}]},function (err,doc) {
        if (doc) {
            if (callback) {
                callback(new Error('该用户已存在',null));
            }
        } else  {
            user.passwd = pwd(user.passwd);
            Users.create(user,callback);
        }
    })
}

module.exports= Users;